home *** CD-ROM | disk | FTP | other *** search
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- + +
- + RAMx Version 1.09 +
- + +
- + Copyright ©1995 Ian Dixon and IvanCo Software. +
- + +
- + All rights reserved. +
- + +
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-
- Author note:
- ------------
- The development of this version of RAMx is being discontinued because
- of various cosmetic compatibility problems with the 2.0+ operating
- systems and a few other reasons. (Examples: a mysterious white bar at
- the bottom of the display when the window is selected, and not liking
- to be run in environments where Topaz 8 is not the system font.)
-
- The next release, 2.0, will be available sometime early next year; I am
- completely rewriting the interface under gadtools.library.
-
- Also, there are a very few inconsistencies between this doc file and the
- program, mostly because of this interface mess. (Yeah, I know; don't
- design yer program by editing the doc file first!) For example, if you
- wanted to write hexadecimal 1A as a shortword, instead of entering %1a in
- the writestring gadget, you should enter $001a. In any case, just use
- '#' for decimal writes and '$' for hexadecimal (not !,@,%, or ^.), adding
- zero placeholders when necessary. However, the symbols for decimal
- numbers will work for searches. For example, !50 is a valid search
- parameter for finding the decimal value 50 on a byte. A few of the keys
- in the keychart have also not been implemented. These include returning
- from a jump (Amiga-J), ASCII chart (A), and the Editor (E).
-
- One other thing: there just *might* be an easter egg (hidden fun but not
- useful feature) hidden within RAMx. I'd offer a clue, but "there is no
- help left."
-
-
- ***************************************************************************
- RAMx V1.09 by Ian Dixon
- ***************************************************************************
-
- RELEASE NOTES:
-
- Version: Date: Notes:
- ---------------------------------------------------------------------------
- 0.0 07-12-89 First roots as BASIC memory lister. Idea for
- graph...various unfinished BASIC and C versions
- ...
-
- 0.87 10-20-94 Pre-release. Finally got around to finishing
- most of assembly version. Still a few quirks,
- such as lack of command line interface,
- and tying up the CLI or whatever launched
- it.
-
- 0.92 11-01-94 Fixed decimal conversion. Added gadget updates
- (press U or click DecGads). Added line on top
- of graph to show range from cursor to endmarker.
-
- 1.09 11-13-95 Cleaned up a bit. Final release until almost
- fully rewritten version 2.0. CLI interface works,
- and Workbench launching no longer crashes on
- exit. (My first Aminet release ever [sniff..])
-
- ---------------------------------------------------------------------------
-
- ***************************************************************************
-
- LEGAL JARGON:
-
- This program is Copyright ©1995 by Ian Dixon. All rights reserved. RAMx
- is a freeware program. However, donations and acknowledgements will be
- gratefully accepted.
-
- RAMx is freely redistributable, meaning you may distribute it, provided this
- archive is intact and unaltered, compression excepted, and no copying fee is
- charged. It is not to appear on any commercial release or commercial
- freeware/shareware compilation without my written consent. I hereby give
- permission to Fred Fish and the compilers of the Aminet CD-ROMs.
-
- NO LIABILITY IS ASSUMED FOR DAMAGES RESULTING FROM THE USE OR ABUSE OF THIS
- PROGRAM OR ANYTHING INCLUDED.
-
- ***************************************************************************
-
- WHAT IS RAMx?
-
- RAMx is a graphical, full-featured memory editor written entirely in
- assembler. Because it can alter memory, it can do nearly anything, like:
-
- * Recover most or all of lost files still in RAM (i.e. an unsaved
- text file in an editor when a crash occurs.)
-
- * Cheat on games
-
- * Alter running programs
-
- * Edit system structures
-
- * "Rip" text from demos and games (how many *text* rippers do you have?)
- For example, ripping the text from PAL demos which is not visible on a
- NTSC display.
-
-
- SYSTEM REQUIREMENTS
- Theoretically, RAMx should run on any Amiga with any configuration, because
- I wrote it with all 680X0 chips in mind and didn't "cheat". If you do have
- problems, write to me with your system specs, and I'll try to figure out
- what's up. If you have a 68040 with copyback on, you may not be able to
- use any RAM-altering functions because RAMx writes directly to memory.
- Turn the copyback mode off to write to memory.
-
-
- LOADING RAMx
- Load RAMx like any other program: Workbench, CLI, or any other method.
- To install RAMx on a hard drive, or anywhere else, drag the icon to
- wherever you want to keep it, or copy the file and .info icon. It is
- entirely self-contained and can load from anywhere you copy it, with
- the obvious exception of "NIL:" ... ;-)
-
-
- USING RAMx
- The first thing you will probably notice is the graph at the top of the
- screen. This is a visual representation of the memory area starting at the
- address in the GraphAdd gadget. The InfoBox is the wide blue rectangle at
- the bottom of the screen. This displays information about the graph and
- cursor, ASCII character codes, or a keychart.
-
- If you understand how addresses of memory work, skip ahead to the asterisks.
-
-
- Crash course in Digital 101:
-
- Each address of memory is like a mailbox containing a value from 0 to 255
- (or $00 to $FF in hexadecimal). This is referred to as a byte. The
- addresses are numbered, from 0 to infinity. The addresses available depend
- on how much memory your computer has and 'where' the memory boards are
- connected. The values in all of the addresses but those in the ROM chip
- can be changed. This is how the computer stores data, such as programs,
- screen image data, RAM disk files, and anything else that is stored on the
- Mysterious Medium of Memory.
-
- The computer can use 2 or 4 addresses at once to enable the storage of
- larger numbers. To avoid confusion, just remember that this is the same
- as using decimal places. For example, suppose address 2 stores the value
- $FF and address 3 stores $00. When read separately, 2 contains 255 and 3
- contains 0. When read together, they hold the value $FF00, or 65280 using
- the decimal system. Two addresses read together contain a shortword, or
- word, valued from 0 to 65535. Four addresses read together contain a
- longword, valued from 0 to 4294967296! A long or short word must be
- located at an even-numbered address, unless you are using RAMx, which reads
- and writes them byte-by-byte. However, a longword or shortword read at
- an odd address rarely has meaning or practical value.
-
-
- Hexadecimal - number system based on 16 instead of 10 (decimal). Digits
- are 0-9, A-F. A is 10, B is 11, etc. The places are valued
- 1st, 16th, 256th, 4096th, etc. where the value of place X
- equals 16^X multiplied by the digit. (get that?)
-
- Example: $4A9F
-
- 4 4 times 16^3 or 4096 = 16384
- A 10 times 16^2 or 256 = 2560
- 9 9 times 16^1 or 16 = 144
- F 15 times 16^0 or 1 = 15
- -----
- $4A9F = 19103
-
- * * * * * *
-
-
- --------------------------- Program Functions: ---------------------------
-
-
- 1. The Graph
-
- The graph at the top of the screen is a function graph. If the graph
- starts at address #0, it is a function graph from address #0 to address
- #639 ($27F). Each pixel on the X axis is an address. The Y axis is the
- byte value at that address, divided by 4 to save screen space. The top
- has the value 0-3 and the bottom the value #252-#255 ($FC-$FF).
-
- I used this method to show more data on the screen than is possible with
- address numbers and values and to make it easier to visually scan a
- relatively large amount of data at once.
-
- To move the graph, enter an address in the StartAdd gadget, (See Search
- for the format.) press the -/_ and +/= keys, which move it a screen at a
- time, or press (J)ump to place the graph at the address stored at the
- cursor, if it's legal. Or, enter an address in the LeftAdd gadget to
- move between that and 32K onward using the proportional gadget under the
- graph. To keep your place, press (S)ave Place, and to go back to this
- place, press (R)eturn. The address of the graph is displayed in the
- Infobox.
-
-
- 2. The Cursor
-
- The cursor is the pixel visible above the graph. If it is not at an
- address on the visible portion of the graph, it will not appear. However,
- it can still be used and moved as if it were still visible. The cursor can
- be moved by clicking on the graph with the right mouse button, entering a
- value in the CursorAdd gadget, or using the cursor keys. Left and right
- move it respectively up and down a byte at a time, and up and down move it
- a longword at a time. Information about the cursor, including the address,
- byte, word, longword, and 8 characters of text are shown at the bottom left
- of the Infobox. The cursor marks the beginning of the search, write,
- replace, and data dump functions.
-
-
- 3. Search
-
- This is a powerful function within RAMx that allows you to search through
- memory. Enter the data to search for in the SearchString gadget in the
- following Simple & Easy Format, place the cursor, enter a stop address in
- EndRange, and click the Search gadget.
-
- String - Just enter the string, but if it begins with a "#" or
- a "$", leave it off, or RAMx will think it's a number.
-
- If you know it lies on an even address, you can more than
- double the search speed by selecting the WordStr gadget
- or the "String search even only" menu. This only works
- for strings; all bytes are searched for on odd or even
- addresses, and words and longwords on even addresses.
-
- Decimal - Enter a symbol followed by the number:
- ! byte
- @ word
- # longword
-
- Hexadecimal - Enter a $ followed by the hex digits.
-
- If you enter some weird, impossible number, RAMx will flash and refuse the
- search. If it's found, RAMx will place the cursor at the first byte of
- the search and the graph 64 bytes behind.
-
- For example, suppose you wanted to find a shortword that contains the number
- $FC. You would enter
-
- %FC
-
- in the SearchString gadget and click the Search gadget. If and when it is
- found, the cursor will jump to the first byte, or in this case, $00. The
- graph would jump to the address 50 bytes before the first byte. RAMx would
- not jump to $FC because it was searched for as a shortword. If a longword
- or shortword are searched for, RAMx will only search on even addresses,
- although it will permit the writing of them on odd addresses.
-
- RAMx can address exactly 4 gigabytes of address space ($00000000 - $FFFFFFFF),
- so even if you've got a lot of RAM, you're covered. Be careful, though:
- if you attempt to read certain addresses in the Amiga's custom chips it will
- modify their register values and probably crash the machine.
-
-
- 4. Write
-
- To write data to memory, enter it in the WriteString gadget in the Search
- format, place the cursor, and click the Write gadget. I do NOT advise
- writing over ANYTHING in the 0-639 range, or anything you're not sure of,
- because you might just reset your computer or crash your system. (Read:
- ScreenMode=FIREWORKS_DISPLAY.) It won't hurt anything, but it can wipe
- out important unsaved items in memory or on ramdisk. (Read "Legal Jargon"
- for "I Warned You" disclaimer) To write a longword or a shortword, place
- the cursor at the beginning address you want the number to occupy. It
- is possible, though not often useful, to write a short or longword at an
- odd address using RAMx, even though the 680x0 CPU refuses to do so.
-
-
- 5. ReadText
-
- This is a feature that allows a quick reading of text. Click with the left
- mouse button on the graph where you want to begin reading, and hold it
- down. The text will scroll across at the very bottom left of the Infobox,
- and a line will scroll across the cursor area denoting the area of memory
- you are reading. Any bytes not representing text will appear as periods
- or spaces, depending on the state of the SPC/"." gadget. If it is
- highlighted, it will be a period, otherwise, a space. The speed can be
- adjusted with the slider gadget at the bottom right of the screen.
-
-
- 6. Data Dumps
-
- Data dumps "dump" data from memory to disk, or many AmigaDOS devices.
- There are 3 types of data dumps. The raw dump copies the byte values from
- memory without any type of formatting or any other changes. Text dumping
- finds strings of text of the length specified in "TextLength" and writes
- the address (in hex) and text to the file. Hex dumping writes hex address
- numbers and bytes in the format below.
-
- Set the cursor and EndRange around the area you wish to dump and click on
- a dump gadget. A "requester" will appear. Enter the desired filename or
- device name. Some valid devices are PRT:, PAR:, NEWCON:, CON:, RAW:, NIL:,
- SER: and there may be others that work.
-
- The format of the hex dump:
-
- Address Data Text
- ---------------------------------------------------------------------------
- $00C03D40 02 8C 52 41 4D 78 56 32 2E 30 20 62 79 20 49 61 ..RAMxV2.0.by Ia
- $00C03D50 6E 20 44 69 78 6F 6E 00 00 D3 12 5E 76 33 FF 01 n Dixon..".^v3..
-
- The format of the text dump:
-
- Address Text
- ---------------------------------------------------------------------------
- $00C03D42 RAMxV2.0 by Ian Dixon
- $00C03F37 File-System
-
-
-
- 7. Miscellaneous Small Functions to Make Life Easier
-
- 7.1 Place Saving (S,R,I)
-
- This function stores the current graph and cursor positions. To Save
- your place, press S. You are free to go elsewhere. To Restore your
- position, press R. To swap the current and saved positons, press I.
-
- 7.2 Graph and Cursor Movement
-
- The - and = keys will move the graph 640 bytes to the left or right.
- The [ and ] keys move it 64 bytes, respectively. The cursor keys can
- be used to place the cursor instead of the gadget: Left and right move
- it by one byte, and up and down move it by the longword. Another less
- precise method is to click on the graph with the right mouse button.
- To move the graph 64 bytes behind the cursor, press P.
-
- 7.3 Jumping Around
-
- This function can be really handy when tracing through system
- structures. To Jump the graph and cursor to the address contained at
- the longword under the cursor, press J. I won't promise anything, but
- if the address is not part of RAM or ROM, it probably won't jump there.
- No promises; the checker is anything but foolproof. To return to where
- you were before the jump, press Amiga-J.
-
-
- 7.4 Keychart
-
- The Help key or K will display a keychart. The keychart can also be
- toggled by clicking on the InfoBox with the right mouse button. The
- Q key will scroll upward and the A key downward through either chart,
- or just click with the left mouse button on the top and bottom of the
- InfoBox. To go back to the normal InfoBox, press ESC or click on it
- again with the right mouse button.
-
- 7.5 Text Block Search
-
- Enter a length to search for in the TextLength gadget and click the
- SrchTxt gadget.
-
- 7.6 Fill Area *not implemented yet
-
- Enter the data to fill with in WriteString. (This can be anything BUT a
- string) Enter stop and start addresses in StartRange and Endrange.
- Then press F for Fill Area and select the "Yes" gadget.
-
- 7.7 Workbench Pointer
-
- Press W to call OpenWorkBench() and place the cursor and graph at the
- address of the Workbench screen. If the Workbench is not present and
- cannot be re-opened, it will "jump" to 0.
-
- 7.8 E-Key text editor * not implemented yet
-
- Place the cursor and press E to type in text. The cursor will move as
- you type, possibly off the screen. (keep going anyway, if needed) The
- 27 characters of text before the cursor can be seen at the lower left
- corner of the InfoBox.
-
- Editor Keychart:
-
- Backspace - Moves cursor one byte to left
- CursorKeys - Left and right move cursor one byte respectively
- Return - Insert a returncode ($0A)
- Left Alt - Insert a null byte
- Esc - Quit the editor
-
-
- 7.9 Miscellaneous Among Miscellaneous
-
- There are numerous other functions too small to necessitate a section
- to document them. These are listed in the Keychart.
-
-
- 8. Keychart
-
- Here are all of the keyboard/mouse functions. Some are not documented above.
- ---------------------------------------------------------------------------
- Q - Scroll infoBox chart up Cursor Right - cursor 1 byte to right
- A - Scroll infoBox chart down Cursor Left - cursor 1 byte to left
- D - Editor* Cursor Up - cursor 1 long to right
- U - Update address gadgets Cursor Down - cursor 1 long to left
- G - Regraph RgtAmiga/J - return from Jump*
- I - Swap C/G pos. with (S)aved RgtAmiga/Q - QUIT!
- J - Jump to longword at cursor RgtMouseBtn - place cursor at pointer
- K - (K)eychart MidMouseBtn - EndRange at pointer(?)
- P - (P)lace graph at cursor LftMouseBtn - ReadText at pointer (hold)
- R - (R)eturn to saved position Help - KeyChart
- C - ASCII chart* E - EndRange at cursor address
- S - Save cursor/graph Position ESC - Reset InfoBox Cursor/Graph
- Z - Write null byte at cursor W - Cursor at Workbench ptr
- [ - Graph 64 bytes to left ] - Graph 64 bytes to right
- - - Graph 640 bytes to left = - Graph 640 bytes to right
- Keys marked with '*' not implemented yet... :/
- ===========================================================================
-
- UPGRADES! UPGRADES!
-
- If you like this program and would like to receive a copy of the current
- version, just send $5.00 in the US or $6.00 from overseas in American funds
- to the following address along with your name and address. Money orders are
- preferred. You will receive the latest revision of RAMx, and the (messy)
- source if you request it, and any small utilities I write and release to
- the public domain on a high-quality disk. Feel free to donate any extra
- alms for a starving programmer...
-
- Ian M. Dixon
- #7 Allegheny Center
- Apt 403
- Pittsburgh, PA 15212
-
- Questions, comments, and complaints are encouraged, not to mention free!
- If you have trouble getting RAMx to run on your system, write me and
- include your system setup, hardware, and an explanation of the exact
- problem. I will try to straighten things out. I can also be reached
- over Internet at:
-
- zorak@telerama.lm.com
-
- and on IRC as "zorak"
-
- ===========================================================================
-
- Possibilities for Future Revisions: (* Will almost certainly happen.)
-
- 1. Zoomable graph - able to specify end as well as beginning of graph
-
- *2. Dynamic graphing - graphing over and over to observe changes over time
-
- *3. Rewriting - keep writing values at a certain list of addresses
-
- *4. Load, edit, and save files
-
- *5. Monitoring a list of addresses for byte changes
-
- 6. "Clickable" chart of memory boards and ability to select a RAM board to
- search or save.
-
- *7. The admittedly flaky interface will be implemented in MUI (Magical User
- Interface,) or gadtools.library. Sorry, 1.3/512K users, but it's
- high time to upgrade!
-
- 8. A built-in graphics ripper (A graphics ripper can find images in RAM
- and save them to an IFF file, even after the
- program has been exited or "erased" by a
- system reboot in many cases.)
-
-
- ===========================================================================
-
- Possible future releases, all in assembly:
-
- UMAC (Universal Macros)
- A macro utility that will generate macros for any Intuition program
- by recording keystrokes, gadget/menu selections, and mouse actions.
-
- Life *
- Yet another engine for the Game of Life (cellular automata). Nearly
- complete; will probably be released if I ever get around to Amiga-tizing
- the interface... 8-}
-
- Anibots **
- Create your own societies of self-replicating virtual robots using a
- language simpler than BASIC. Will include genetic mutation abilities.
- Nearing completion.
-
- * Life written by Ian Dixon and Gary Galland.
-
- ** Anibots conceived and designed by Ian Dixon. Written by Gary Galland.
-
- --------------------------------------------------------------------------
- My canonical thanklist of the highly esteemed is as follows:
- (in no order whatsoever)
- --------------------------------------------------------------------------
- Gary Galland ----- for being my college roomie, debug help, muchas ideas,
- and BEER
-
- Doug Bennett ----- for being my college roomie, an Amiga to develop on while
- mine was down (about 5 months), and CHILI
-
- Ken Wright ------- for the best BBS in town, testing, and RAM
-
- Mike Wood -------- for fast search routine suggestions, sage Amiga
- assembly advice, and RADIOLOGY
-
- Billy Williams --- for moral support, elec. guitar lessons, and PITTSBURGH
-
- Carey Clevenger -- for ideas, movies, and MORTAL KOMBAT II
-
- Commodore & crew - for the best damn computer available today, and
- MULTITASKING (Sayonara! You will be missed!)
-
- David Letterman -- for Late Night coding breaks, laughs, and CANNED HAM
-
- - - -
-
- A special thanks to everyone in the list before Commodore for putting up
- with me over the years. (Mike Wood or Ken Wright from Vienna, if you're
- reading this, drop me a line sometime soon, either over Internet or
- Snailnet...)
-
- *Absolutely* no thanks to Microsoft, IBM, Apple, 7-Eleven, Rush Limbaugh,
- DeVry Institute of Technology in Columbus OH, Hardee's, Miss Ball (my 4th
- grade teacher), the Lamer Exterminator II virus, which destroyed about a
- week's worth of coding, or Tipper Gore, censorshit advocate.
-
- --------------------------------------------------------------------------
-
- MCP: End of line.
-
-